home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / management / Agent.class (.txt) next >
Encoding:
Java Class File  |  2006-11-29  |  7.3 KB  |  286 lines

  1. package sun.management;
  2.  
  3. import java.io.BufferedInputStream;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileNotFoundException;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.lang.management.ManagementFactory;
  10. import java.lang.reflect.Method;
  11. import java.text.MessageFormat;
  12. import java.util.MissingResourceException;
  13. import java.util.Properties;
  14. import java.util.ResourceBundle;
  15. import javax.management.remote.JMXConnectorServer;
  16. import sun.management.jmxremote.ConnectorBootstrap;
  17. import sun.management.snmp.AdaptorBootstrap;
  18. import sun.misc.VMSupport;
  19.  
  20. public class Agent {
  21.    private static Properties mgmtProps;
  22.    private static ResourceBundle messageRB;
  23.    private static final String CONFIG_FILE = "com.sun.management.config.file";
  24.    private static final String SNMP_PORT = "com.sun.management.snmp.port";
  25.    private static final String JMXREMOTE = "com.sun.management.jmxremote";
  26.    private static final String JMXREMOTE_PORT = "com.sun.management.jmxremote.port";
  27.    private static final String ENABLE_THREAD_CONTENTION_MONITORING = "com.sun.management.enableThreadContentionMonitoring";
  28.    private static final String LOCAL_CONNECTOR_ADDRESS_PROP = "com.sun.management.jmxremote.localConnectorAddress";
  29.  
  30.    public static void premain(String var0) throws Exception {
  31.       agentmain(var0);
  32.    }
  33.  
  34.    public static void agentmain(String var0) throws Exception {
  35.       if (var0 == null || var0.length() == 0) {
  36.          var0 = "com.sun.management.jmxremote";
  37.       }
  38.  
  39.       Properties var1 = new Properties();
  40.       if (var0 != null) {
  41.          String[] var2 = var0.split(",");
  42.  
  43.          for(int var3 = 0; var3 < var2.length; ++var3) {
  44.             String[] var4 = var2[var3].split("=");
  45.             if (var4.length >= 1 && var4.length <= 2) {
  46.                String var5 = var4[0];
  47.                String var6 = var4.length == 1 ? "" : var4[1];
  48.                if (var5 != null && var5.length() > 0) {
  49.                   if (var5.startsWith("com.sun.management.")) {
  50.                      var1.setProperty(var5, var6);
  51.                   } else {
  52.                      error("agent.err.invalid.option", var5);
  53.                   }
  54.                }
  55.             }
  56.          }
  57.       }
  58.  
  59.       Properties var7 = new Properties();
  60.       String var8 = var1.getProperty("com.sun.management.config.file");
  61.       readConfiguration(var8, var7);
  62.       var7.putAll(var1);
  63.       startAgent(var7);
  64.    }
  65.  
  66.    private static void startAgent(Properties var0) throws Exception {
  67.       String var1 = var0.getProperty("com.sun.management.snmp.port");
  68.       String var2 = var0.getProperty("com.sun.management.jmxremote");
  69.       String var3 = var0.getProperty("com.sun.management.jmxremote.port");
  70.       String var4 = var0.getProperty("com.sun.management.enableThreadContentionMonitoring");
  71.       if (var4 != null) {
  72.          ManagementFactory.getThreadMXBean().setThreadContentionMonitoringEnabled(true);
  73.       }
  74.  
  75.       try {
  76.          if (var1 != null) {
  77.             AdaptorBootstrap.initialize(var1, var0);
  78.          }
  79.  
  80.          if (var2 != null || var3 != null) {
  81.             if (var3 != null) {
  82.                ConnectorBootstrap.initialize(var3, var0);
  83.             }
  84.  
  85.             Properties var5 = VMSupport.getAgentProperties();
  86.             if (var5.get("com.sun.management.jmxremote.localConnectorAddress") == null) {
  87.                JMXConnectorServer var6 = ConnectorBootstrap.startLocalConnectorServer();
  88.                String var7 = var6.getAddress().toString();
  89.                var5.put("com.sun.management.jmxremote.localConnectorAddress", var7);
  90.  
  91.                try {
  92.                   ConnectorAddressLink.export(var7);
  93.                } catch (Exception var9) {
  94.                   warning("agent.err.exportaddress.failed", var9.getMessage());
  95.                }
  96.             }
  97.          }
  98.       } catch (AgentConfigurationError var10) {
  99.          error(var10.getError(), var10.getParams());
  100.       } catch (Exception var11) {
  101.          error(var11);
  102.       }
  103.  
  104.    }
  105.  
  106.    public static Properties loadManagementProperties() {
  107.       Properties var0 = new Properties();
  108.       String var1 = System.getProperty("com.sun.management.config.file");
  109.       readConfiguration(var1, var0);
  110.       var0.putAll(System.getProperties());
  111.       return var0;
  112.    }
  113.  
  114.    public static synchronized Properties getManagementProperties() {
  115.       if (mgmtProps == null) {
  116.          String var0 = System.getProperty("com.sun.management.config.file");
  117.          String var1 = System.getProperty("com.sun.management.snmp.port");
  118.          String var2 = System.getProperty("com.sun.management.jmxremote");
  119.          String var3 = System.getProperty("com.sun.management.jmxremote.port");
  120.          if (var0 == null && var1 == null && var2 == null && var3 == null) {
  121.             return null;
  122.          }
  123.  
  124.          mgmtProps = loadManagementProperties();
  125.       }
  126.  
  127.       return mgmtProps;
  128.    }
  129.  
  130.    private static void readConfiguration(String var0, Properties var1) {
  131.       if (var0 == null) {
  132.          String var2 = System.getProperty("java.home");
  133.          if (var2 == null) {
  134.             throw new Error("Can't find java.home ??");
  135.          }
  136.  
  137.          StringBuffer var3 = new StringBuffer(var2);
  138.          var3.append(File.separator).append("lib");
  139.          var3.append(File.separator).append("management");
  140.          var3.append(File.separator).append("management.properties");
  141.          var0 = var3.toString();
  142.       }
  143.  
  144.       File var21 = new File(var0);
  145.       if (!var21.exists()) {
  146.          error("agent.err.configfile.notfound", var0);
  147.       }
  148.  
  149.       FileInputStream var22 = null;
  150.  
  151.       try {
  152.          var22 = new FileInputStream(var21);
  153.          BufferedInputStream var4 = new BufferedInputStream(var22);
  154.          var1.load(var4);
  155.       } catch (FileNotFoundException var17) {
  156.          error("agent.err.configfile.failed", var17.getMessage());
  157.       } catch (IOException var18) {
  158.          error("agent.err.configfile.failed", var18.getMessage());
  159.       } catch (SecurityException var19) {
  160.          error("agent.err.configfile.access.denied", var0);
  161.       } finally {
  162.          if (var22 != null) {
  163.             try {
  164.                ((InputStream)var22).close();
  165.             } catch (IOException var16) {
  166.                error("agent.err.configfile.closed.failed", var0);
  167.             }
  168.          }
  169.  
  170.       }
  171.  
  172.    }
  173.  
  174.    public static void startAgent() throws Exception {
  175.       String var0 = System.getProperty("com.sun.management.agent.class");
  176.       if (var0 == null) {
  177.          Properties var10 = getManagementProperties();
  178.          if (var10 != null) {
  179.             startAgent(var10);
  180.          }
  181.  
  182.       } else {
  183.          String[] var1 = var0.split(":");
  184.          if (var1.length < 1 || var1.length > 2) {
  185.             error("agent.err.invalid.agentclass", "\"" + var0 + "\"");
  186.          }
  187.  
  188.          String var2 = var1[0];
  189.          String var3 = var1.length == 2 ? var1[1] : null;
  190.          if (var2 == null || var2.length() == 0) {
  191.             error("agent.err.invalid.agentclass", "\"" + var0 + "\"");
  192.          }
  193.  
  194.          if (var2 != null) {
  195.             try {
  196.                Class var4 = ClassLoader.getSystemClassLoader().loadClass(var2);
  197.                Method var11 = var4.getMethod("premain", String.class);
  198.                var11.invoke((Object)null, var3);
  199.             } catch (ClassNotFoundException var6) {
  200.                error("agent.err.agentclass.notfound", "\"" + var2 + "\"");
  201.             } catch (NoSuchMethodException var7) {
  202.                error("agent.err.premain.notfound", "\"" + var2 + "\"");
  203.             } catch (SecurityException var8) {
  204.                error("agent.err.agentclass.access.denied");
  205.             } catch (Exception var9) {
  206.                String var5 = var9.getCause() == null ? var9.getMessage() : var9.getCause().getMessage();
  207.                error("agent.err.agentclass.failed", var5);
  208.             }
  209.          }
  210.  
  211.       }
  212.    }
  213.  
  214.    public static void error(String var0) {
  215.       String var1 = getText(var0);
  216.       System.err.print(getText("agent.err.error") + ": " + var1);
  217.       throw new RuntimeException(var1);
  218.    }
  219.  
  220.    public static void error(String var0, String[] var1) {
  221.       if (var1 != null && var1.length != 0) {
  222.          StringBuffer var2 = new StringBuffer(var1[0]);
  223.  
  224.          for(int var3 = 1; var3 < var1.length; ++var3) {
  225.             var2.append(" " + var1[var3]);
  226.          }
  227.  
  228.          error(var0, var2.toString());
  229.       } else {
  230.          error(var0);
  231.       }
  232.  
  233.    }
  234.  
  235.    public static void error(String var0, String var1) {
  236.       String var2 = getText(var0);
  237.       System.err.print(getText("agent.err.error") + ": " + var2);
  238.       System.err.println(": " + var1);
  239.       throw new RuntimeException(var2);
  240.    }
  241.  
  242.    public static void error(Exception var0) {
  243.       var0.printStackTrace();
  244.       System.err.println(getText("agent.err.exception") + ": " + var0.toString());
  245.       throw new RuntimeException(var0);
  246.    }
  247.  
  248.    public static void warning(String var0, String var1) {
  249.       System.err.print(getText("agent.err.warning") + ": " + getText(var0));
  250.       System.err.println(": " + var1);
  251.    }
  252.  
  253.    private static void initResource() {
  254.       try {
  255.          messageRB = ResourceBundle.getBundle("sun.management.resources.agent");
  256.       } catch (MissingResourceException var1) {
  257.          throw new Error("Fatal: Resource for management agent is missing");
  258.       }
  259.    }
  260.  
  261.    public static String getText(String var0) {
  262.       if (messageRB == null) {
  263.          initResource();
  264.       }
  265.  
  266.       try {
  267.          return messageRB.getString(var0);
  268.       } catch (MissingResourceException var2) {
  269.          return "Missing management agent resource bundle: key = \"" + var0 + "\"";
  270.       }
  271.    }
  272.  
  273.    public static String getText(String var0, String... var1) {
  274.       if (messageRB == null) {
  275.          initResource();
  276.       }
  277.  
  278.       String var2 = messageRB.getString(var0);
  279.       if (var2 == null) {
  280.          var2 = "missing resource key: key = \"" + var0 + "\", " + "arguments = \"{0}\", \"{1}\", \"{2}\"";
  281.       }
  282.  
  283.       return MessageFormat.format(var2, (Object[])var1);
  284.    }
  285. }
  286.